﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DTO;
using DAO;
using System.Text.RegularExpressions;

namespace QLDaiLy
{
    public partial class PhieuThuTien :XtraUserControl
    {
       
        private string MaNhanVien;
        public PhieuThuTien()
        {
            InitializeComponent();
        }
        private void LoadDanhSachTenDaiLy()
        {
            List<DaiLyDTO> list = new List<DaiLyDTO>();
            list = DaiLyDAO.LoadDanhSachDaiLy2();
            lookupDaiLy.Properties.DataSource = list;
            lookupDaiLy.Properties.ValueMember = "MaDaiLy";
            lookupDaiLy.Properties.DisplayMember = "TenDaiLy";
            DevExpress.XtraEditors.Controls.LookUpColumnInfo col;
            col = new DevExpress.XtraEditors.Controls.LookUpColumnInfo("TenDaiLy");
            col.SortOrder = DevExpress.Data.ColumnSortOrder.Ascending;
            lookupDaiLy.Properties.Columns.Add(col);
        }
        public PhieuThuTien(string MaDaiLy, string TenDaiLy, string NoCuaDaiLy)
        {
            InitializeComponent();
            LoadDanhSachTenDaiLy();
            LoadCapNhatDaiLy(MaDaiLy, TenDaiLy, NoCuaDaiLy);
          
        }

        public PhieuThuTien(string MaNhanVien)
        {
            // TODO: Complete member initialization
            InitializeComponent();
            LoadDanhSachTenDaiLy();
            this.MaNhanVien = MaNhanVien;
        }
        private void LoadCapNhatDaiLy(string MaDaiLy, string TenDaiLy, string NoCuaDaiLy)
        {
            lookupDaiLy.EditValue = MaDaiLy;
            textSoTienNo.Text = NoCuaDaiLy;
        }
        private void btnDanhSach_Click(object sender, EventArgs e)
        {

            TableLayoutPanel tb = (TableLayoutPanel)this.Parent;
            tb.Controls.Remove(tb.GetControlFromPosition(0, 1));
            XemDanhSachDaiLy frm = new XemDanhSachDaiLy();
            tb.Controls.Add(frm, 0, 1);
        }
        private bool IsNumber(string s)
        {
            Regex regex = new Regex(@"^[-+]?[0-9]*\.?[0-9]+$");
            return regex.IsMatch(s);
        }
        private void btnPhieuThuTien_Click(object sender, EventArgs e)
        {
            dateNgayThuTien.Text = Convert.ToString(DateTime.Now);
            int sotienno = Convert.ToInt32(textSoTienNo.Text);
            if (IsNumber(textSoTienThu.Text))
            {
                int sotienthu = Convert.ToInt32(textSoTienThu.Text);
                if (sotienthu <= 0)
                {
                    MessageBox.Show("Số tiền thu phải lớn hơn 0");
                    textSoTienThu.Text = "";
                }
                else
                {
                    PhieuThuTienDTO pt = new PhieuThuTienDTO();

                    pt.MaPhieuThu = PhieuThuTienDAO.TaoMaPhieuThu();
                    pt.NgayThuTien = dateNgayThuTien.Text;
                    pt.SoTienThu = Convert.ToInt32(textSoTienThu.Text);
                    // pt.MaDaiLy = textMaDaiLy.Text;
                    pt.MaDaiLy = lookupDaiLy.EditValue.ToString();
                    pt.MaNhanVien = MaNhanVien;

                    int noCuaDaiLy_DaCapNhat = Math.Abs(Convert.ToInt32(textSoTienThu.Text) - Convert.ToInt32(textSoTienNo.Text));
                    if (textSoTienThu.Text == "" || textSoTienNo.Text == "")
                    {
                        MessageBox.Show("Vui lòng nhập đày đủ thông tin");
                    }
                    else
                    {
                        if (sotienthu <= sotienno)
                        {
                            bool kq = PhieuThuTienDAO.ThemPhieuThu(pt);
                            if (kq == true)
                            {
                                MessageBox.Show("Thêm phiếu thu tiền thành công.\nSố tiền nợ hiện tại của đại lý: " + noCuaDaiLy_DaCapNhat);
                                bool kqcapnhat = DaiLyDAO.CapNhatNoCuaDaiLy(pt.MaDaiLy, noCuaDaiLy_DaCapNhat);
                                if (kqcapnhat == true)
                                {
                                    textSoTienThu.Text = "";
                                    //   lookupDaiLy.EditValue = "Chọn tên đại lý";
                                    dateNgayThuTien.EditValue = "Chọn ngày";
                                    // textSoTienNo.Text = "";
                                    textSoTienNo.Text = Convert.ToString(noCuaDaiLy_DaCapNhat);
                                    // btnThuTien.Visible = false;
                                }
                                else
                                {
                                    MessageBox.Show("Không cập nhật được số tiền nợ");
                                }
                            }
                            else
                            {
                                MessageBox.Show("Không thực hiện được");
                            }

                        }
                        else
                        {
                            MessageBox.Show("Số tiền thu vượt quá số tiền nợ.\nVui lòng nhập lại !!!");
                        }
                    }
                }
            }
            else
            {
                MessageBox.Show("Số tiền thu phải là số");
                textSoTienThu.Text = "";
            }
            
        }

        private void lookupDaiLy_EditValueChanged(object sender, EventArgs e)
        {
            string MaDaiLy = lookupDaiLy.EditValue.ToString();
            DataTable dl = DaiLyDAO.NoCuaDaiLy(MaDaiLy);
            DataRow dr = dl.Rows[0];
            textSoTienNo.Text = dr["NoCuaDaiLy"].ToString();
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }
    }
}
